-
-
Notifications
You must be signed in to change notification settings - Fork 482
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
no longer ignore errors in method union
of DisjointSet
#38944
base: develop
Are you sure you want to change the base?
Conversation
Documentation preview for this PR (built with commit e93a360; changes) is ready! 🎉 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…intSet` Fixes sagemath#38939. This PR changes the declaration of method `union` from `noexcept` to `except *` to properly raise errors. ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [x] I have created tests covering the changes. - [ ] I have updated the documentation and checked the documentation preview. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> URL: sagemath#38944 Reported by: David Coudert Reviewer(s): Travis Scrimshaw
…intSet` Fixes sagemath#38939. This PR changes the declaration of method `union` from `noexcept` to `except *` to properly raise errors. ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [x] I have created tests covering the changes. - [ ] I have updated the documentation and checked the documentation preview. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> URL: sagemath#38944 Reported by: David Coudert Reviewer(s): Travis Scrimshaw
Can you please report the time it takes to run
before and after the change? |
The slowdown seems rather limited. Before: sage: %timeit matroids.CompleteGraphic(3).circuits()
53.3 µs ± 68.4 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
sage: %timeit matroids.CompleteGraphic(4).circuits()
118 µs ± 526 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
sage: %timeit matroids.CompleteGraphic(5).circuits()
1.23 ms ± 9.29 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
sage: %timeit matroids.CompleteGraphic(6).circuits()
23.2 ms ± 92.2 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
sage: %timeit matroids.CompleteGraphic(7).circuits()
525 ms ± 3.07 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
sage: %timeit matroids.CompleteGraphic(8).circuits()
13.6 s ± 59.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) With this PR: sage: %timeit matroids.CompleteGraphic(3).circuits()
56.6 µs ± 111 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
sage: %timeit matroids.CompleteGraphic(4).circuits()
124 µs ± 756 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
sage: %timeit matroids.CompleteGraphic(5).circuits()
1.29 ms ± 24.1 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
sage: %timeit matroids.CompleteGraphic(6).circuits()
23.4 ms ± 186 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
sage: %timeit matroids.CompleteGraphic(7).circuits()
543 ms ± 12.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
sage: %timeit matroids.CompleteGraphic(8).circuits()
13.9 s ± 59.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) |
Thanks for running the tests. I suppose the slowdown can be ignored if the error handling is deemed to be of some value. |
Fixes #38939.
This PR changes the declaration of method
union
fromnoexcept
toexcept *
to properly raise errors.📝 Checklist
⌛ Dependencies